Zmena charsetu databaze IB

Otázka od: delphi@mjsoft.cz

10. 12. 2003 17:09

Zdravim,

  mam starsi Interbase databazi plnou dat. Kdyz jsem ji vytvarel, tak
jsem zapomnel na cesky charset. Nyni bych to ale potreboval zmenit. Je
nejaka jednoducha varianta, jak to udelat?

Jin


Odpovedá: Pavel Cisar

10. 12. 2003 18:46

Haj hou!

On 10 Dec 2003 at 17:00, delphi@mjsoft.cz wrote:

> mam starsi Interbase databazi plnou dat. Kdyz jsem ji vytvarel, tak
> jsem zapomnel na cesky charset. Nyni bych to ale potreboval zmenit. Je
> nejaka jednoducha varianta, jak to udelat?

databaze je charset NONE, ale obsahuje data ve WIN1250 ? Lze to
udelat primo v databazi konverzi pres charset OCTETS. Je treba
vytvorit duplicitni tabulky ovsem s jiz definovanym charsetem win1250
pro znakove polozky. Pote se data prevedenou pomoci INSERT INTO
newtable SELECT sloupce a konverzni vyrazy...

V selectu se znakova data prevadeji funkci CAST na data v charsetu
OCTETS, napr.
CAST(COL_NONE AS CHAR(20) CHARACTER SET OCTETS)
Takovy retezec lze primo priradit libovolne znakove polozce s
definovanym charsetem, aniz by se provadela konverze (charset POCTETS
je chapan jako proud bajtu, a pokud je cilem nebo zdrojem dat, pak se
konverze neprovadi a data se priradi tak jak jsou - predpoklada se,
ze vite co delate  

Lze to take provest primo v tabulce, pokud se prida polozka se
spravnym charsetem, pak se naplni prikazem

UPDATE TABLEA
SET COL_WIN1250 =CAST(COL_NONE AS CHAR(20)CHARACTER SET OCTETS);

S pozdravem
Pavel Cisar ( ICQ: 89017288)
Mobil: 724 281429
http://www.ibphoenix.cz
Vse co potrebujete pro Firebird a InterBase